package com.seraphine.security.config;

import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 描述: 自定义追加信息类，jwt默认生成的用户信息主要是用户角色、用户名等，如果希望在生成的jwt上添加额外的信息，可以用这种方式添加
 * 作者: panhongtong
 * 创建时间: 2020-10-19 10:21
 **/
@Component
public class CustomAdditionalInformation implements TokenEnhancer {

    /**
     * 添加额外信息
     * @param oAuth2AccessToken 这个参数就是已经生成的access_token信息，可以从中取出已生成的额外信息，并追加自己的信息
     * @param oAuth2Authentication
     * @return
     */
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
        Map<String, Object> information = oAuth2AccessToken.getAdditionalInformation();
        information.put("author", "一个野生的开发实习生罢了");
        ((DefaultOAuth2AccessToken)oAuth2AccessToken).setAdditionalInformation(information);
        return oAuth2AccessToken;
    }
}
